package com.boot2523.myrabbitmq.q1;

import com.rabbitmq.client.Channel;
import com.rabbitmq.client.Connection;
import com.rabbitmq.client.ConnectionFactory;

public class Producer {
    private final static String QUEUE_NAME = "simple_queue";

    public static void main(String[] args) throws Exception {
        // 创建连接工厂
        ConnectionFactory factory = new ConnectionFactory();
        factory.setHost("localhost"); // RabbitMQ 地址
        factory.setPort(5672);         // 默认端口
        factory.setUsername("guest");
        factory.setPassword("guest");

        // 建立连接
        try (Connection connection = factory.newConnection();
             Channel channel = connection.createChannel()) {

            // 声明队列（若已存在不会重复创建）第二个参数为true表示队列持久化
            channel.queueDeclare(QUEUE_NAME, true, false, false, null);

            // 要发送的消息内容
            String message = "测试消息";

            // 发送消息到队列
//            将一条消息发布到指定的队列中。
//            exchange ""（空字符串）表示使用默认交换机（Default Exchange）
//            routingKey QUEUE_NAME 路由键，这里就是队列名
//                    props null 消息属性（如持久化、优先级等），未设置
//            如果你希望消息在 RabbitMQ 重启后仍然存在，需要设置消息属性为持久化：
//            channel.basicPublish("", QUEUE_NAME, MessageProperties.PERSISTENT_TEXT_PLAIN, message.getBytes());
//                    body message.getBytes() 实际的消息内容（字节数组）
            channel.basicPublish("", QUEUE_NAME, null, message.getBytes());
            System.out.println(" [x] 发送消息'" + message + "'");
        }
    }
}
